/**
 * @author CompuMundoHiperMegaRed
 * 
 * esta clase es la encargada de gobernar el sistema, crea los robots y los lugares
 * necesarios y los maneja como especifica la consulta
 *
 */

package system;
import java.util.ArrayList;

public class Sistema{// extends Thread {
	
	private Lugar m1 = new Maquina("M1",this);
	private Lugar m2 = new Maquina("M2",this);
	private Lugar m3 = new Maquina("M3",this);
	private Lugar m4 = new Maquina("M4",this);
	
	private Lugar i1 = new Input("I1",this);	
	private Lugar i2 = new Input("I2",this);	
	private Lugar i3 = new Input("I3",this);	
	
	private Lugar o1 = new Output("O1",this);
	private Lugar o2 = new Output("O2",this);
	private Lugar o3 = new Output("O3",this);
	
	private ArrayList<Lugar> lista1 = new ArrayList<Lugar>();
	private ArrayList<Lugar> lista2 = new ArrayList<Lugar>();
	private ArrayList<Lugar> lista3 = new ArrayList<Lugar>();
	
	private Robot r1;// = new Robot("R1",this);
	private Robot r2;// = new Robot("R2",this);
	private Robot r3;// = new Robot("R3",this);
	
	/*public Sistema(){
		start();
	}*/
	public Sistema(){
		
		lista1.add(i1);
		lista1.add(m1);
		lista1.add(m3);
		lista1.add(o3);
		
		lista2.add(i2);
		lista2.add(m1);
		lista2.add(m2);
		lista2.add(m3);
		lista2.add(m4);
		lista2.add(o2);
		
		lista3.add(i3);
		lista3.add(m2);
		lista3.add(m4);
		lista3.add(o1);
		
		r1 = new Robot("R1",this,lista1);
		r2 = new Robot("R2",this,lista2);
		r3 = new Robot("R3",this,lista3);
		
		
	}
	
	public void trayectoria1(){
		
		r1.mover(i1, m1);
		r1.mover(i1, m1);
		r2.mover(m1, m2);
		r2.mover(m1, m2);
		r3.mover(m2, o1);
	}
	
	public void trayectoria2(){
		
		r2.mover(i2, m3);
		r2.mover(i2, m3);
		r2.mover(m3, m4);
		r2.mover(m4, o2);
		r2.mover(m3, m4);
		r2.mover(m4, o2);
	}

	public void trayectoria3(){
	
		r3.mover(i3, m2);
		r3.mover(i3, m4);
		r2.mover(m2, m3);
		r2.mover(m4, m3);
		r1.mover(m3, m1);
		}
	
	/*public void run(){
		trayectoria1();
		//trayectoria2();
		//trayectoria3();
	}
	*/
	
	
	public Lugar getM1() {
		return m1;
	}

	public Lugar getM2() {
		return m2;
	}

	public Lugar getM3() {
		return m3;
	}

	public Lugar getM4() {
		return m4;
	}

	public Lugar getI1() {
		return i1;
	}

	public Lugar getI2() {
		return i2;
	}

	public Lugar getI3() {
		return i3;
	}

	public Lugar getO1() {
		return o1;
	}

	public Lugar getO2() {
		return o2;
	}

	public Lugar getO3() {
		return o3;
	}

	public ArrayList<Lugar> getLista1() {
		return lista1;
	}

	public ArrayList<Lugar> getLista2() {
		return lista2;
	}

	public ArrayList<Lugar> getLista3() {
		return lista3;
	}

	public Robot getR1() {
		return r1;
	}

	public Robot getR2() {
		return r2;
	}

	public Robot getR3() {
		return r3;
	}

	
	
	public static void main(String[] args) {
	
    Sistema sistema = new Sistema();
    
    sistema.trayectoria1();
	}
}